package cn.zwx.member.svc.service;

import cn.zwx.base.exception.BizWrapException;
import cn.zwx.member.svc.dto.AddressCreateReqDTO;
import cn.zwx.member.svc.dto.AddressQueryDTO;
import cn.zwx.member.svc.dto.AddressUpdateReqDTO;
import cn.zwx.member.svc.vo.AddressRespVO;

import java.util.List;

/**
 * @author zhangwenxue
 */
public interface AddressService {
    /**
     * 创建用户收件地址
     * @param dto 请求参数
     * @return 用户id
     */
    Long createAddress(AddressCreateReqDTO dto) throws BizWrapException;

    /**
     * 更新用户收件地址
     * @param dto 请求参数
     * @return 是否成功
     */
    Boolean updateAddress(AddressUpdateReqDTO dto) throws BizWrapException;

    /**
     * 删除用户收件地址
     * @param id 地址id
     * @param userId 用户Id
     * @return 是否成功
     */
    Boolean deleteAddress(Long id,Long userId) throws BizWrapException;

    /**
     * 获得用户收件地址
     * @param dto 请求
     * @return 返回地址新
     */
    AddressRespVO getAddress(AddressQueryDTO dto);

    /**
     * 获得默认的用户收件地址
     * @param userId 请求参数
     * @return 返回地址信息
     */
    AddressRespVO getDefaultUserAddress(Long userId);

    /**
     * 获得用户收件地址列表
     * @param userId 用户id
     * @return 返回地址新
     */
    List<AddressRespVO> getAddressList(Long userId);
}
